package main

import (
	"fmt"
	"testing"
)

type ListV1[T any] interface {
	// Add 添加一个节点
	Add(idx int, v T)
	// Append 追加一个节点
	Append(v T)
	// Delete 删除一个节点
	Delete(idx T)
}

// 定义泛型节点结构体
type nodeV1[T any] struct {
	data T          // 节点存储的数据，类型为 T
	next *nodeV1[T] // 指向下一个节点的指针，类型为 *nodeV1[T]
}

type LinkedListV1[T any] struct {
	head *nodeV1[T]
}

func (l *LinkedListV1[T]) Add(idx int, v T) {
	panic("implement me")
}

func (l *LinkedListV1[T]) Append(v T) {
	panic("implement me")
}

func (l *LinkedListV1[T]) Delete(idx T) {
	panic("implement me")
}

func Sum[T Number](data ...T) T {
	var res T
	for _, v := range data {
		res = res + v
	}
	return res
}

type MyInt int

func (mi MyInt) GetValue() int {
	return int(mi)
}

func TestSum(t *testing.T) {
	// 测试用例1：测试整数求和
	sum := Sum(1, 2, 3, uint(3))
	if sum != 9 {
		t.Errorf("Expected sum to be %d, got %d", 6, sum)
	}

	// 测试用例2：测试单个整数求和
	sum = Sum(uint(10))
	if sum != uint(10) {
		t.Errorf("Expected sum to be %d, got %d", 10, sum)
	}

	// 可以根据需要添加更多的测试用例，覆盖各种情况
}

type Number interface {
	int | uint
}

func main() {
	// 在 main 函数中执行测试
	fmt.Println("Running tests...")
	TestSum(&testing.T{})
}
